#!/usr/bin/env python3

# 收集报表时，原始报表的数据已经有的，需要收集后更新原始报表的内容，就用这个脚本
#

import argparse
import sys
from rich import print as rprint


sys.path.append("../lib")
from inner_util import prepare_dir
import datetime

from sheet_task import SheetTask

TARGET_DIR = "dist"


def parse_args():
    parser = argparse.ArgumentParser(description="汇总表格")
    parser.add_argument("--name", help="报表名称")
    parser.add_argument("--data", help="数据表格路径")
    parser.add_argument("--month", type=int, default=0, help="某月")
    return parser.parse_args()


def build_tasks_config(name, month=0):
    timestamp = datetime.date.today().strftime("%Y-%m-%d")

    # primary col 是 0 索引的
    tasks = [
        {
            "name": "未开工",
            "area": "A8:AN19",
            "template": "附件1：未开工项目清单（玉溪）.xlsx",
            "mod_cells": {"O3": f"表中数据为上周，请更新为{timestamp}数据"},
            "post_mod_cells": {"A3": f"日期：{timestamp}"},
            "primary_col": 3,
        },
        {
            "name": "已开工未入库",
            "area": "A8:AO35",
            "template": "附件2：已开工未入库清单（玉溪）.xlsx",
            "mod_cells": {
                "O3": f"表中数据为上周，请更新为{timestamp}数据",
            },
            "post_mod_cells": {"A3": f"日期：{timestamp}"},
            "primary_col": 3,
        },
        {
            "name": "投资完成滞后",
            "area": "A8:AP51",
            "template": "附件3：投资完成滞后项目清单（玉溪）.xlsx",
            "mod_cells": {
                "O3": f"表中数据为上周，请更新为{timestamp}数据",
            },
            "post_mod_cells": {"A3": f"日期：{timestamp}"},
            "primary_col": 3,
        },
        {
            "name": "设备更新",
            "area": "A5:R8",
            "template": "设备更新云南省调度表（玉溪）.xlsx",
            "mod_cells": {"H10": f"请更新为{timestamp}数据"},
            "primary_col": 3,
        },
        {
            "name": "设备更新储备",
            "area": "A6:AK16",
            "template": "省设备更新储备.xlsx",
            "mod_cells": {
                "H1": f"时间戳{timestamp}",
                "AJ4": f"截止2025年{month}月已完成投资",
            },
            "primary_col": 4,
        },
        {
            "name": "新能源电池",
            "area": "A12:AU30",
            "template": "云南省光伏、电池产业项目月调度表.xlsx",
            "mod_cells": {
                "L10": f"表中数据为上月，请更新为{month}月数据",
            },
            "primary_col": 1,
        },
        {
            "name": "绿色铝",
            "area": "A6:T10",
            "template": "附件3：云南省绿色铝产业建成企业运行情况调度表.xlsx",
            "mod_cells": {
                "A2": f"云南省绿色铝产业建成企业运行情况调度表（2024年{month}月）",
                "J4": f"2024年{month}月产量",
                "L4": f"2024年1-{month}月累计产量",
                "N4": f"2024年{month}月产值",
                "P4": f"2024年1-{month}月累计产值",
                "H20": f"表中数据为上月，请更新为{month}月数据",
            },
            "primary_col": 4,
        },
        {
            "name": "工业投资预计",
            "area": "A3:O13",
            "template": "工业投资预计.xlsx",
            "mod_cells": {
                "A1": f"工业投资预计（{month}月）",
                "G16": f"表中数据为上月，请更新为{month}月数据",
            },
            "primary_col": 0,
        },
        {
            "name": "能源外工业重点企业",
            "area": "A6:P16",
            "template": "附件2：能源以外工业重点企业情况表.xlsx",
            "mod_cells": {
                "G3": f"2025年1—{month}月\n产值（万元）",
                "I4": f"1—{month + 1}月",
            },
            "primary_col": 2,
        },
        {
            "name": "能源外工业重点项目",
            "area": "A5:V26",
            "template": "附件3：能源以外工业重点项目情况表.xlsx",
            "mod_cells": {
                "R3": f"截至2025年{month}月累计完成投资（万元）",
            },
            "primary_col": 1,
        },
        {
            "name": "能源外工业停建缓建",
            "area": "A5:O24",
            "template": "附件1：2024年以来能源以外工业停建缓建相关项目清单.xlsx",
            "mod_cells": {
                "F1": f"表中数据为上月，请更新为{month}月数据",
            },
            "primary_col": 1,
        },
        {
            "name": "能源工业停建缓建",
            "area": "A5:O16",
            "template": "附件2：2024年以来能源工业停建缓建相关项目清单.xlsx",
            "mod_cells": {
                "F1": f"表中数据为上月，请更新为{month}月数据",
            },
            "primary_col": 1,
        },
        {
            "name": "tmp",
            "area": "A4:H12",
            "template": "设备更新中属于软件更新的金额表.xlsx",
            "mod_cells": {},
            "primary_col": 1,
        },
    ]

    names = [x["name"] for x in tasks]

    if name not in names:
        print("No such task")
        return None

    return tasks[names.index(name)]


def main():
    prepare_dir(TARGET_DIR, False)

    args = parse_args()

    rprint("Args", args)

    config = build_tasks_config(args.name, args.month)

    sheet_task = SheetTask(config)

    if args.month != 0:
        sheet_task.build_tempalte(args.month, TARGET_DIR)

    else:
        res = sheet_task.recive_data(args.data, TARGET_DIR)
        sheet_task.stat(res)

    print("Done")


if __name__ == "__main__":
    main()
